"""
微信视频号直播配置管理模块
"""
import os
import json
from app.utils.logger import Logger

class WXLiveConfig:
    """微信直播配置管理类"""
    
    def __init__(self):
        """初始化配置"""
        self.logger = Logger.get_logger("wx_live_config")
        self.config = {
            "spy_url": "https://channels.weixin.qq.com/platform/live/liveBuild",
            "forward_url": "",  # 默认不转发
            "chrome_userdata_path": os.path.join(os.path.expanduser("~"), ".wx_live_spy"),
            "browser_profile_path": ""  # 用户保存的浏览器配置路径，默认为空
        }
        
    def get_prop(self, key):
        """
        获取配置项
        
        @param key: 配置键名
        @return: 配置值
        """
        return self.config.get(key)
        
    def set_prop(self, key, value):
        """
        设置配置项
        
        @param key: 配置键名
        @param value: 配置值
        """
        self.config[key] = value
        self.logger.info(f"配置已更新: {key}={value}")
        
    def save_config(self, filepath):
        """
        保存配置到文件
        
        @param filepath: 文件路径
        @return: 是否成功
        """
        try:
            # 确保目录存在
            os.makedirs(os.path.dirname(filepath), exist_ok=True)
            
            with open(filepath, 'w', encoding='utf-8') as f:
                json.dump(self.config, f, ensure_ascii=False, indent=2)
                
            self.logger.info(f"配置已保存到: {filepath}")
            return True
        except Exception as e:
            self.logger.error(f"保存配置失败: {str(e)}")
            return False
            
    def load_config(self, filepath):
        """
        从文件加载配置
        
        @param filepath: 文件路径
        @return: 是否成功
        """
        try:
            if os.path.exists(filepath):
                with open(filepath, 'r', encoding='utf-8') as f:
                    loaded_config = json.load(f)
                    self.config.update(loaded_config)
                    
                self.logger.info(f"配置已从 {filepath} 加载")
                return True
            return False
        except Exception as e:
            self.logger.error(f"加载配置失败: {str(e)}")
            return False 